package com.xd.core.bill.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 账单列表分页查询返回vo
 * </p>
 *
 * @author ZCH
 * @since 2025/02/28/16:30
 */
@Data
@Accessors(chain = true)
public class BillDetailVo {
    @ApiModelProperty(value = "	账单编号")
    private Integer id;

    @ApiModelProperty(value = "当前还款日(账期)")
    private String currentRepaymentDate;

    @ApiModelProperty(value = "账单状态  0:待还款 1:已还款 2:已逾期 3提前还款 4提前结清")
    private String status;

    @ApiModelProperty(value = "账单状态  0:待还款 1:已还款 2:已逾期 3提前还款 4提前结清")
    private String statusRemark;

    @ApiModelProperty(value = "是否代收(0--代收,1--不代收)")
    private String isWithhold;

    @ApiModelProperty(value = "是否代收(0--代收,1--不代收)")
    private String isWithholdRemark;

    @ApiModelProperty(value = "借款方式 0:等额本金 1:等额本息 2:等本等息 3:到期还本付息 4:先息后本")
    private String loanMethod;

    @ApiModelProperty(value = "借款方式 0:等额本金 1:等额本息 2:等本等息 3:到期还本付息 4:先息后本")
    private String loanMethodRemark;

    @ApiModelProperty(value = "是否申请线下还款(0--否,1--是)")
    private String isOfflineRepay;

    @ApiModelProperty(value = "是否申请线下还款(0--否,1--是)")
    private String isOfflineRepayRemark;

    @ApiModelProperty(value = "上次扣款失败原因")
    private String failCause;

    @ApiModelProperty(value = "应还本金总计")
    private BigDecimal shouldRepayPrincipal;

    @ApiModelProperty(value = "应还本息总计")
    private BigDecimal shouldRepayInterest;

    @ApiModelProperty(value = "剩余应还本金")
    private BigDecimal remainingShouldRepayPrincipal;

    @ApiModelProperty(value = "剩余应还利息")
    private BigDecimal remainingShouldRepayInterest;

    @ApiModelProperty(value = "逾期利息(单位元)")
    private BigDecimal overdueInterest;

    @ApiModelProperty(value = "罚息(单位元)")
    private BigDecimal defaultInterestTodo;

    @ApiModelProperty(value = "违约金")
    private BigDecimal currentRepaymentPenalty;

    @ApiModelProperty(value = "应还本期总额")
    private BigDecimal amount;

    @ApiModelProperty(value = "应还本期本金")
    private BigDecimal principal;

    @ApiModelProperty(value = "应还本期利息")
    private BigDecimal interest;

    @ApiModelProperty(value = "实际还款金额")
    private BigDecimal repayAmount;

    @ApiModelProperty(value = "手动扣款次数")
    private Integer repayTimes;

    @ApiModelProperty(value = "还款凭证")
    private String repayVoucher;

    @ApiModelProperty(value = "进件id")
    private Integer incomingId;

    @ApiModelProperty(value = "债权id")
    private Integer debtId;

    @ApiModelProperty(value = "实际还款日期")
    @JsonFormat(pattern = "yyyy-MM-dd",shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date factRepaymentDate;
}
